home *** CD-ROM | disk | FTP | other *** search
/ IRIX 6.2 Applications 1996 May / SGI IRIX 6.2 Applications 1996 May.iso / dist / impr_dev.idb / usr / impressario / src / libimp / impRowMisc.c.z / impRowMisc.c
C/C++ Source or Header  |  1996-05-06  |  3KB  |  112 lines

  1. /**************************************************************************
  2.  *
  3.  *           Copyright (c)    1993 Silicon Graphics, Inc.
  4.  *            All Rights Reserved
  5.  *
  6.  *       THIS    IS UNPUBLISHED PROPRIETARY SOURCE CODE OF SGI
  7.  *
  8.  * The copyright notice above does not evidence any actual of intended
  9.  * publication of such source code, and is an unpublished work by Silicon
  10.  * Graphics, Inc. This material contains CONFIDENTIAL INFORMATION that is
  11.  * the property of Silicon Graphics, Inc. Any use, duplication or
  12.  * disclosure not specifically authorized by Silicon Graphics is strictly
  13.  * prohibited.
  14.  *
  15.  * RESTRICTED RIGHTS LEGEND:
  16.  *
  17.  * Use, duplication or disclosure by the Government is subject to
  18.  * restrictions as set forth in subdivision (c)(1)(ii) of the Rights in
  19.  * Technical Data and Computer Software clause at DFARS 52.227-7013,
  20.  * and/or in similar or successor clauses in the FAR, DOD or NASA FAR
  21.  * Supplement. Unpublished - rights reserved under the Copyright Laws of
  22.  * the United States. Contractor is SILICON GRAPHICS, INC., 2011 N.
  23.  * Shoreline Blvd., Mountain View, CA 94039-7311
  24.  **************************************************************************
  25.  *
  26.  * File: impRowMisc.c
  27.  *
  28.  * Description: Perform miscellaneous operations on image rows.
  29.  *
  30.  **************************************************************************/
  31.  
  32.  
  33. #ident "$Revision: 1.1 $"
  34.  
  35.  
  36. #include <stdio.h>
  37. #include <sys/types.h>
  38. #include <assert.h>
  39. #include "impI.h"
  40.  
  41.  
  42. /**************************************************************************
  43.  *
  44.  * Function: impPackRow
  45.  *
  46.  * Description: Copies the specified row of short values into the
  47.  *    byte sized destination. Note that the source values are not
  48.  *    scaled to the byte range.
  49.  *
  50.  * Parameters: 
  51.  *    dptr (O) - destination row
  52.  *    sptr (I) - source row
  53.  *    n (I) - number of pixels in row
  54.  *
  55.  * Return: none
  56.  *
  57.  **************************************************************************/
  58.  
  59. void impPackRow(register uchar_t *dptr, register short *sptr, int n)
  60. {
  61.     /*
  62.      * Sanity check the inputs
  63.      */
  64.     assert(dptr != NULL);
  65.     assert(sptr != NULL);
  66.  
  67.     /*
  68.      * We start from the begiining and move up. This way if
  69.      * dptr and sptr point to the same storage, the copy
  70.      * will still work
  71.      */
  72.     while (n--)
  73.     *dptr++ = *sptr++ & 0xFF;
  74. }
  75.  
  76.  
  77. /**************************************************************************
  78.  *
  79.  * Function: impUnpackRow
  80.  *
  81.  * Description: Copies the specified row of short values into the
  82.  *    byte sized destination. Note that the source values are not
  83.  *    scaled to the short range.
  84.  *
  85.  * Parameters: 
  86.  *    dptr (O) - destination row
  87.  *    sptr (I) - source row
  88.  *    n (I) - number of pixels in row
  89.  *
  90.  * Return: none
  91.  *
  92.  **************************************************************************/
  93.  
  94. void impUnpackRow(register short *dptr, register uchar_t *sptr, int n)
  95. {
  96.     /*
  97.      * Sanity check the inputs
  98.      */
  99.     assert(dptr != NULL);
  100.     assert(sptr != NULL);
  101.  
  102.     /*
  103.      * We start from the end and go backwards. This way if
  104.      * dptr and sptr point to the same storage the copy will
  105.      * still work.
  106.      */
  107.     dptr += (n - 1);
  108.     sptr += (n - 1);
  109.     while (n--)
  110.     *dptr-- = *sptr--;
  111. }
  112.